package com.ftg.learn.chapter07;

/**
 * 看看一底层
 * @author kangjx
 * @date 2022/12/28
 */
public class FirstString {

    /**
     * 事爹 ： 实例化了一下这个类FristString 没有调用里面的方法
     *   new FirstString(); 3天以后再用， new int[10];三天是不是没有任何用到的时候
     */
    private int[] values;

    private int default_capacity;

    private int index = 0;

    public FirstString(int capacity){
        default_capacity = capacity;
        System.out.println("我是构建方法，当有我对我进行实例化的时候，我会执行");
    }

    public void add(int obj){

        if(values == null){
            values = new int[default_capacity];
        }

        values[index++] = obj;
    }

    /**
     * 代码重用性 ： 方法重载  。。 名称相同  列表不同。
     *  构造方法，可以重载吗？ 也是方法呀
     *
     *
     * @param args
     */

    public static void main(String[] args) {

        /**
         * 引用类型的实例化公式
         * 引用类型 标识符  = new 引用类型构建方法();
         */

        /**
         * 也就是说new 类名();构造方法
         */
        FirstString firstString = new FirstString(2);

        String str = "abc";
//        这个str产生了几个字符串实例
        //产生了一个  "abc"
        String str1 = new String("abc");
//        这个str1产生了几个字符串实例
//        "abc"是实例吧
//          new String()构造方法，会产生实例
//        "aa" 这叫字符串实例
        //方法

        //强烈不建议使用 产生了一个永远不可变更的地址 "" 产生了一个无效没有意义的地址
        String str2 = new String();
//        String str3 = new String(参数);

//        强烈建议的
//        String str4 = "abc";

        //普通方法


        //构造方法 : java当中存在这么一类方法，我们希望当这个类实例化的时候（new）就会自动执行
        // 然后这个方法不需要返回值 void 省略。 jvm来处理
        // 让这个方法的名称与类名相同.
        // 构造方法  构造器  构造函数
        // 目标 ： 为了完成这个类的实例化，实例化的时候，有可能需要一些初始值,为类型里面的变量 做初始值
        //     构造方法越简单越好。  每一次new，构造,大量



        /**
         * 常量 char[] value;
         */
        /**
         * 也就是说 string类不能有子类，不有扩展
         */
    }

}
